import Cesium from '../../../public/tool/cesium/Cesium';

export const CesiumLayer = {
    imageryProvider: null,
    tdt_key: 'c8d9cd645bd34ae0fc54995e1f6c87e9',
    createImageryProvider: function (options) {
        let _this = this;
        switch (options.type) {
            case 'www_tdt':
                for (let s = new Array(18), l = 0; l <= 18; l++) { s[l] = l.toString(); }
                _this.imageryProvider = new Cesium.WebMapTileServiceImageryProvider({
                    url: 'http://t{s}.tianditu.com/' + options.layer + '_w/wmts?service=WMTS&tk=' + _this.tdt_key + '&version=1.0.0&request=GetTile&tilematrix={TileMatrix}&layer=' + options.layer + '&style={style}&tilerow={TileRow}&tilecol={TileCol}&tilematrixset={TileMatrixSet}&format=tiles',
                    layer: options.layer, //"",
                    style: 'default',
                    format: 'tiles',
                    tileMatrixSetID: 'w',
                    subdomains: ['0', '1', '2', '3', '4'],
                    tilingScheme: new Cesium.WebMercatorTilingScheme,
                    maximumLevel: 16
                });
                break;
            default:
                break;
        }
        return _this.imageryProvider;
    },
    createLayer: function (options) {
        let layer;
        switch (options.type) {
            case '3dtiles':
                layer = new Cesium.Cesium3DTileset({
                    url: options.url,
                    maximumNumberOfLoadedTiles: 100, //最大加载瓦片个数
                    skipLevelOfDetail: true
                });
                layer.readyPromise.then(function (tileset) {
                    // let params = {
                    //     tx: 117.15350812,  //模型中心X轴坐标（经度，单位：十进制度）
                    //     ty: 38.947178073,    //模型中心Y轴坐标（纬度，单位：十进制度）
                    //     tz: 192,    //模型中心Z轴坐标（高度，单位：米）
                    //     rx: 0,    //X轴（经度）方向旋转角度（单位：度）圆心应该是在地心，改动其中一个值的时候，不止变化了该变量，比如改动ry，模型的高度也有了显著上升
                    //     ry: 0,    //Y轴（纬度）方向旋转角度（单位：度）
                    //     rz: 4.1      //Z轴（高程）方向旋转角度（单位：度）
                    // };
                    // //  旋转
                    // // let mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(params.rx));
                    // // let my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(params.ry));
                    // let mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(params.rz));
                    // // let rotationX = Cesium.Matrix4.fromRotationTranslation(mx);
                    // // let rotationY = Cesium.Matrix4.fromRotationTranslation(my);
                    // let rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);
                    // //  平移
                    // let position = Cesium.Cartesian3.fromDegrees(params.tx, params.ty, params.tz);
                    // let m = Cesium.Transforms.eastNorthUpToFixedFrame(position);
                    // //  旋转、平移矩阵相乘
                    // // Cesium.Matrix4.multiply(m, rotationX, m);
                    // // Cesium.Matrix4.multiply(m, rotationY, m);
                    // Cesium.Matrix4.multiply(m, rotationZ, m);
                    // //  赋值给tileset
                    // tileset._root.transform = m;
                }).otherwise(function (e) {
                    throw e;
                });
                break;
        }
        return layer;
    }
};
